_Pragma("once");

#include <string>

#include "common.h"
#include "Editor.h"


/**
 * 字符串编辑器
 *
 * @author lizb
 */
class StringEditor:public BasicEditor {

public:
    /**
     * @param lineNum     起始行数		从1开始
     * @param startPos    起始位置（列）	从1开始
     * @param endPos      结束位置（列）
     * @param valList 编辑字符串的list
     */
    StringEditor(int lineNum, int startPos, int endPos);

    const std::string& getText() override {

        return textBuffer;
    }


    bool setValue(const std::string& value) {
        mindex = value.size();
        this->textBuffer = value;
        textBuffer.resize(maxCharactor);
        return true;
    }


    std::string getValue(void) {
        return textBuffer.substr(0, mindex);
    }


//   int onKeyPressed(const KeyCode& keyCode) override;

    int onKeyDown(const KeyCode& keyCode) override;


    int onKeyUp(const KeyCode& keyCode) override {

        return 1;
    }

    int onOtherKey(const KeyCode& keyCode) override;


protected:
    std::string::size_type mindex;
};
